/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package beans;

import bc.TipodocumentoFacadeLocal;
import be.Tipodocumento;
import be.Tipotrabajo;
import java.io.Serializable;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import javax.inject.Named;

/**
 *
 * @author yzavaleta
 */
@Named("managedBeanTipoDocumento")
@SessionScoped
public class ManagedBeanTipoDocumento implements Serializable {

    @EJB
    private TipodocumentoFacadeLocal tipodocumentoFacade;
    private Tipodocumento objeto;
    private Tipodocumento objetoCrear;
    private List<Tipodocumento> lista;
    private List<Tipodocumento> listaFiltrada;
    private List<SelectItem> ListaItems = new LinkedList<SelectItem>();
    private HashMap<Integer, Tipodocumento> myMapItems = new HashMap<Integer, Tipodocumento>();

    public ManagedBeanTipoDocumento() {
        objeto = new Tipodocumento();
        objetoCrear = new Tipodocumento();
        lista = new LinkedList<>();
        listaFiltrada = new LinkedList<>();
    }

    public Tipodocumento getObjeto() {
        return objeto;
    }

    public void setObjeto(Tipodocumento objeto) {
        this.objeto = objeto;
    }

    public Tipodocumento getObjetoCrear() {
        return objetoCrear;
    }

    public void setObjetoCrear(Tipodocumento objetoCrear) {
        this.objetoCrear = objetoCrear;
    }

    public List<Tipodocumento> getLista() {
        lista = new LinkedList<>();
        for (Tipodocumento a : tipodocumentoFacade.findAll()) {

            if (a.getEstadoExistencia() == 1) {
                lista.add(a);
            }

        }

        return lista;
    }

    public void setLista(List<Tipodocumento> lista) {
        this.lista = lista;
    }

    public List<Tipodocumento> getListaFiltrada() {
        return listaFiltrada;
    }

    public void setListaFiltrada(List<Tipodocumento> listaFiltrada) {
        this.listaFiltrada = listaFiltrada;
    }

    public List<SelectItem> getListaItems() {
        ListaItems = new LinkedList<SelectItem>();
        myMapItems = new HashMap<Integer, Tipodocumento>();

        for (Tipodocumento p : tipodocumentoFacade.findAll()) {

            if (p.getEstadoExistencia() == 1) {
                myMapItems.put(p.getId(), p);

                ListaItems.add(new SelectItem(p, p.getCodigo() + "-" + p.getDescripcion()));

            }

        }
        return ListaItems;
    }

    public void setListaItems(List<SelectItem> ListaItems) {
        this.ListaItems = ListaItems;
    }

    public HashMap<Integer, Tipodocumento> getMyMapItems() {
        return myMapItems;
    }

    public void setMyMapItems(HashMap<Integer, Tipodocumento> myMapItems) {
        this.myMapItems = myMapItems;
    }

    public void llenar_myItems() {
        try {
            myMapItems = new HashMap<Integer, Tipodocumento>();
            for (Tipodocumento p : tipodocumentoFacade.findAll()) {
                if (p.getEstadoExistencia() == 1) {
                    myMapItems.put(p.getId(), p);
                    ListaItems.add(new SelectItem(p, p.getCodigo() + "-" + p.getDescripcion()));
                }

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public Tipodocumento getObjeto(int id) {
        return myMapItems.get(id);
    }

    public void crear() {
        try {
            // los estados 1 siempre son estados activos
            //  objetoCrear.setEstadoExistencia(1);

            tipodocumentoFacade.create(objetoCrear);
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage("REGISTRO GRABADO CON EXITO", "NUEVO ITEM"));

        } catch (Exception e) {
            e.printStackTrace();
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage("ERROR AL GRABAR", "CONTACTE AL ADMINISTRADOR"));

        }
    }

    public void editar() {
        try {
            //  System.out.println("nos llega "+objeto);
            tipodocumentoFacade.edit(objeto);
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage("REGISTRO EDITADO CON EXITO", ""));

        } catch (Exception e) {
            e.printStackTrace();
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage("ERROR AL EDITAR", "CONTACTE AL ADMINISTRADOR"));

        }
    }

    public void editarEliminar() {
        try {
            //  System.out.println("nos llega "+objeto);
            objeto.setEstadoExistencia(2);
            tipodocumentoFacade.edit(objeto);
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage("REGISTRO EDITADO CON EXITO", ""));

        } catch (Exception e) {
            e.printStackTrace();
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage("ERROR AL EDITAR", "CONTACTE AL ADMINISTRADOR"));

        }
    }
}
